#!/bin/bash

# 项目根目录
PROJECT_ROOT="$(pwd)"

# Flask 应用模块和实例名 (例如: app:app)
APP_MODULE="start:app"

# 绑定的 IP 地址和端口
BIND_ADDRESS="0.0.0.0:5001"

# 工作进程数
WORKERS=3

# 其他 Gunicorn 选项，例如日志级别、错误日志文件等

# Gunicorn 可执行文件路径 (通常在你的虚拟环境的 bin 目录下)
GUNICORN_BIN="/path/to/your/virtualenv/bin/gunicorn"

# PID 文件路径，用于存储 Gunicorn 主进程的 PID
PID_FILE="$PROJECT_ROOT/gunicorn.pid"

# 切换到项目根目录
cd "$PROJECT_ROOT" || exit

# 检查 PID 文件是否存在，如果存在则提示并退出
if [ -f "$PID_FILE" ]; then
  echo "错误: Gunicorn 进程 PID 文件 '$PID_FILE' 已存在，可能服务已经在运行。"
  exit 1
fi

# 启动 Gunicorn
echo "启动 Gunicorn..."
nohup "$GUNICORN_BIN" --workers "$WORKERS" --bind "$BIND_ADDRESS" --pid "$PID_FILE" "$APP_MODULE" &

echo "Gunicorn 已在后台启动，PID 存储在 '$PID_FILE'。"